package isp.apps.example.shoppingcart.domain;

import java.util.Map.Entry;

import java.math.BigDecimal;

import java.util.Collection;
import java.util.List;

/**
 * Generic methods for a shopping cart
 * 
 */
public interface

ShoppingCart
{

  public void addItem(isp.apps.example.shoppingcart.domain.Item newItem,
                      int newQuantity);

  public void addItem(isp.apps.example.shoppingcart.domain.Item newItem);

  public int removeItem(isp.apps.example.shoppingcart.domain.Item newItem,
                        int removeQuantity);

  public int removeItem(isp.apps.example.shoppingcart.domain.Item newItem);

  public int removeAllOfItem(isp.apps.example.shoppingcart.domain.Item newItem);

  public void emptyCart();

  public int setItemQuantity(String newSku, int newQuantity);

  public boolean isEmpty();

  public int getItemQuantity(isp.apps.example.shoppingcart.domain.Item newItem);

  public int getCartDistinctItemCount();

  public int getCartTotalQuantityCount();

  public isp.apps.example.shoppingcart.domain.Item getItemBySku(String sku);

  public BigDecimal getTotalPrice();

  public Collection getCartItems();

  public void setTaxCalculator(TaxCalculator tc);

  public int removeBySku(String s);
  
  public void setOrderId(Integer orderId);
  
  public Integer getOrderId();

}
